Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

502
Vistas
¿Por qué test >= 0 es verdadero cuando test es nulo?

Digamos que tengo el siguiente código javascript:

 const test = null if ( test >= 0 ){ console.log("Hello World") }

Este código imprimirá Hello World ... En mi opinión, debería funcionar solo si test === null . Pero todas las veces que uso la test >= 0 , el código cae sobre ella. ¿Hay alguna razón por la que sucede? Lo veo como un problema en algunas situaciones... Por ejemplo, en el siguiente código:

 const test = null if ( test >= 0 ){ console.log("1") } else if ( test === null ){ console.log("Hello World") }

En este caso, el código no está haciendo lo que aparentemente debería estar haciendo. La solución para que funcione sería tener el hábito de poner siempre la condición === null al principio en if/else o switch/cases. ¿Es así como se supone que debo trabajar con Javascript? ¿O hay una mejor manera de hacerlo?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

¿Hay alguna razón por la que sucede?

Cualquier valor que se compare con un número será coaccionado a un número 1 . Number(null) es 0 , y 0 >= 0 es true . Si hubiera usado undefined por otro lado, habría obtenido NaN >= 0 , que es false .

1: De hecho, la única comparación relacional no numérica es entre dos cadenas (o dos objetos que se convierten en cadenas).

La solución para que funcione sería tener la costumbre de poner siempre la condición === null al principio.

Sí, así es como se manejan las variables que pueden tener el valor null .

¿O hay una mejor manera de hacerlo?

Es posible que desee evitar tener el valor null en su variable. Dependiendo de la aplicación, cualquiera que sea el valor que represente, ¿también podría expresarse como 0 o -1 , tal vez? Puede que no sean mucho más limpios, pero al menos tendrían un comportamiento predecible en >= 0 .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Pensé que era una pregunta simple pero me equivoqué. Fui a comprobar ECMAScript Language Specification, que especificaba cómo funciona "a>=b".

Resultó que no está haciendo "a>b || a==b", sino que está devolviendo la respuesta opuesta de "a<b". Creo que es por eso que (null>= 0) devuelve verdadero, porque (null <0) devuelve falso.

especificaciones ES3

11.8.4 El operador mayor que o igual ( >= ) La producción RelationalExpression : RelationalExpression >= ShiftExpression se evalúa de la siguiente manera:

  1. Evaluar ExpresiónRelacional.
  2. Llame a GetValue (Resultado (1)).
  3. Evalúe ShiftExpression.
  4. Llame a GetValue (Resultado (3)).
  5. Realice la comparación Result(2) < Result(4) . (ver 11.8.5).**
  6. Si Result(5) es verdadero o indefinido, devuelve falso. De lo contrario, devuelve verdadero.

Y encontré otra referencia que traza los operadores relacionales y de igualdad de algunos casos especiales.

Operadores relacionales y de igualdad

about 4 years ago · Juan Pablo Isaza Denunciar

0

si convierte nulo en bool, obtiene 0.

 if ( test >= 0 ){

Aquí se usa un operador más grande o igual para la comparación, por lo que está obteniendo resultados correctos.

Por ejemplo

 Boolean(null); // false

Para obtener más información, consulte https://javascript.info/ifelse#boolean-conversion

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda